const db_users = require('./db.js').users
const db_provider = require('./db').providers
const db_role = require('./db').roles
const db_order = require('./db').orders
const moment = require('moment')

module.exports = {

    // 操作供应商表
    addProvider: (obj, callback) => {   // 添加供应商
        let user = new db_provider({
            providerCode: obj.proCode,
            providerName: obj.proName,
            linkman: obj.proContact,
            phone: obj.proPhone,
            address: obj.proAddress,
            fax: obj.proFax,
            desc: obj.proDesc
        })
        user.createDate =  moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
        user.save((err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },
    getProviderListAll: (callback) => {     // 获取全部供应商列表
        db_provider.find((err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },
    delProvider: (id, callback) => {        // 删除指定供应商
        db_provider.findByIdAndRemove(id, (err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },
    getProviderById: (id, callback) => {    // 根据id查找指定供应商信息
        db_provider.findById(id, (err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },
    updateProviderById: (id, obj, callback) => {     // 根据id修改指定供应商信息
        let user = {
            providerCode: obj.proCode,
            providerName: obj.proName,
            linkman: obj.proContact,
            phone: obj.proPhone,
            address: obj.proAddress,
            fax: obj.proFax,
            desc: obj.proDesc
        }
        id = id.slice(1, id.length -1)
        db_provider.findByIdAndUpdate(id, user, (err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },
    searchProvider: (queryProCode, queryProName, callback) => {     // 按条件查找供应商
        let obj = {}
        if(queryProCode){
            obj.providerCode = queryProCode
        }
        if(queryProName){
            obj.providerName = queryProName
        }

        db_provider.find(obj, (err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },
    getProviderNameList: (callback) => {
        let opt = {
            providerName: 1,
            providerCode: 1
        }
        db_provider.find({}, opt, (err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },

    // 操作角色表
    getAllRole: (callback) => {
        db_role.find((err, data) =>{
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },



    // 操作用户表
    isLogin: (userCode, userPwd, callback) => {     // 判断登录状态
        // 按条件查询数据
        let userObj = {
            "userCode": userCode,
            "userPassword": userPwd
        }

        db_users.find(userObj, function(err, res){ 
            if (err) {
                return callback(err)
            }
            callback(null, res)
        })
    },
    updataPwdByOldPwd: (username, newPwd, callback) => {    // 修改登录密码
        db_users.updateOne({"userCode": username}, {"userPassword": newPwd}, (err, data) =>{
            if(err){
                return callback(err)
            } 
            callback(null, data)
        })
    },
    checkedCode: (code, callback) => {      // 校验用户名是否已使用
        let obj = {userCode: code}
    
        db_users.findOne(obj, (err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },
    addUser: (obj, callback) => {       // 添加用户信息
        let user = new db_users({
            id: 0,
            userCode: obj.userCode,
            userName: obj.userName,
            userPassword: obj.userPassword,
            gender: obj.gender,
            birthday: obj.birthday,
            phone: obj.phone,
            address: obj.address,
            creationDate: new Date(),
            modifyDate: new Date(),
            role: obj.userRole
        })
        db_role.findOne({'roleId': obj.userRole}, (err, data) => {
            if(err){
                return err
            }
            user.role = data.roleName
            user.save((err, data) => {
                if(err){
                    return callback(err)
                }
                callback(null, data)
            })
        })
        
        
    },
    getUser: (pageIndex, callback, opt) => {       // 获取用户数据列表
        if(opt){
            // 按条件查询
            db_users.find(opt ,(err, data) => {
                if(err){
                    return callback(err)
                }
                callback(null, data)
            })
        } else {
            // 查询全部
            db_users.find((err, data) => {
                if(err){
                    return callback(err)
                }
                callback(null, data)
            }).limit(10).skip((pageIndex - 1) * 10)            
        }
        
    },
    getCount: (opt, callback) => {
        opt = opt ? opt : {}
        db_users.count(opt, (err, data) => {
            if(err){
                return callback(err)
            }else{
                callback(null, data)
            }
        })
    },
    delUser: (id, callback) => {        // 根据Id删除指定用户
        db_users.findByIdAndDelete(id, (err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },
    viewUser: (id, callback) => {       // 根据ID 查找指定用户信息
        db_users.findById(id, (err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },
    updateUser: (obj, callback) => {    // 修改指定用户信息
        let user = {
            userName: obj.userName,
            gender: obj.gender,
            birthday: obj.birthday,
            phone: obj.phone,
            address: obj.address,
            modifyDate: new Date(),
            role: obj.userRole
        }
        db_role.findOne({'roleId': obj.userRole}, (err, data) => {
            if(err){
                return err
            }
            user.role = data.roleName

            let id = obj.uid.slice(1, obj.uid.length - 1)
            db_users.findByIdAndUpdate(id, user, (err, data) => {
                if(err){
                    return callback(err)
                }
                callback(null, data)
            })
        })
        
    },
    


    // 操作商品表


    // 操作订单表
    addOrder: (obj, callback) => {      // 添加新订单
        let order = new db_order({
            orderCode: obj.billCode,
            orderName: obj.productName,  
            providerName: obj.providerId,   // 供应商ID
            commUnit: obj.productUnit,
            orderAmount: obj.totalPrice,
            isPay: obj.isPayment,  
            createDate: moment(new Date()).format('YYYY-MM-DD HH:DD:ss')
        })
        order.save((err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },
    getOrder: (callback, opt) => {        // 获取订单列表
        if(opt){
            db_order.find(opt, (err, data) => {
                if(err){
                    return callback(err)
                }
                callback(null, data)
            })
        } else {
            db_order.find((err, data) => {
                if(err){
                    return callback(err)
                }
                callback(null, data)
            })
        }
    },
    viewOrder: (code, callback) => {    // 获取指定订单编号的详细信息
        db_order.findOne({'orderCode': code}, (err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    },
    updateOrder: (obj, callback) => {   // 更新指定ID的信息
        let id = obj.id.slice(1, obj.id.length - 1)
        let order = {
            orderCode: obj.billCode,
            orderName: obj.productName,  
            providerName: obj.providerId,   // 供应商ID
            commUnit: obj.productUnit,
            orderAmount: obj.totalPrice,
            isPay: obj.isPayment,  
            createDate: moment(new Date()).format('YYYY-MM-DD HH:DD:ss')
        }
        db_order.findByIdAndUpdate(id, order, (err, data) => {
            if(err){
                return callback(err)
            }
            callback(null, data)
        })
    }

    
    


}